# @property 装饰器用于将一个方法变成属性。这意味着你可以像访问属性一样访问这个方法，而不需要加括号。
class Person(object):
    def __init__(self):
        self.__age=18#定义一个私有化实例属性，属性名字前面加两个下划线
    def get_age(self):#访问私有化实例属性
        return self.__age
    def set_age(self,age):#修改私有化实例属性
        if age<0:
            print('年龄不能小于0')
        else:
            self.__age=age
            pass
        pass
    #定义一个类属性实现通过直接访问属性的形式去访问私有化属性
    age=property(get_age,set_age)
    pass
p1=Person()
# p1.get_age()
# p1.set_age(19)
print(p1.age)
p1.age=25
print(p1.age)
p1.age=-1
print(p1.age)
# 实现方式2 通过修饰器的方式去声明
class Person(object):
    def __init__(self):
        self.__age=18#定义一个私有化实例属性，属性名字前面加两个下划线
    @property #用修饰器修饰 添加属性标志 提供一个getter方法
    def age(self):
        return self.__age
    @age.setter #提供一个setter方法
    def age(self,parms):
        if parms<0:
            print('年龄不能小于0')
        else:
            self.__age=parms
            pass
        pass
    pass
p1=Person()
print(p1.age)
p1.age=-1
print(p1.age)